#!/bin/bash
###############################################################################
# @用例ID: 20230526-193352-168319425
# @用例名称: curltest
# @用例级别: 3
# @用例标签:
# @用例类型: 功能
###############################################################################
[ -z "$TST_TS_TOPDIR" ] && {
    TST_TS_TOPDIR="$(realpath "$(dirname "$0")/..")"
    export TST_TS_TOPDIR
}
source "${TST_TS_TOPDIR}/tst_common/lib/common.sh" || exit 1
###############################################################################

g_tmpdir="$(mktemp -d)"

# 设置测试环境
tc_setup() {
    msg "Setting up test environment"
    
    # 检查是否安装了 curl
    if ! command -v curl &> /dev/null; then
        echo "curl is not installed. Installing curl..."
        # 根据您的系统使用适当的安装命令，例如 apt-get、yum 等
        # 这里使用 apt-get 安装 curl
        sudo apt-get install -y curl
    fi

    return 0
}

# 执行测试
do_test() {
    msg "Running tests"

    local ret
    # @测试步骤:1: 发送 GET 请求并检查响应
    # @预期结果:1: get请求响应成功
    response=$(curl -sS "https://www.example.com")
    if [[ $response =~ "Example Domain" ]]; then
        echo "GET request test passed"
    else
        echo "GET request test failed"
        ret=1
    fi


    # @测试步骤:2: 发送 POST 请求并检查响应
    # @预期结果:2: post请求响应成功
    data="name=John&age=30"
    response=$(curl -sS -X POST -d "$data" "https://httpbin.org/post")
    if [[ $response =~ "name=John" && $response =~ "age=30" ]]; then
        echo "POST request test passed"
    else
        echo "POST request test failed"
        ret=1
    fi


    # @测试步骤:3: 下载文件并检查文件是否存在
    # @预期结果:3: 文件存在
    url="https://www.example.com/somefile.txt"
    filename="somefile.txt"
    curl -sS -O "$url"
    if [ -f "$filename" ]; then
        echo "File download test passed"
        rm "$filename"
    else
        echo "File download test failed"
        ret=1
    fi

    assert_true [$ret -eq 0 ]
    
    return 0
}


tc_teardown() {
    return 0
}


tc_teardown() {
    msg "this is tc_teardown"
    rm -rfv "$g_tmpdir" || return 1
    return 0
}

###############################################################################
tst_main "$@"
###############################################################################
